CloudTrail Trails
AWS CloudTrail 在整个 AWS 基础设施中监控和记录账户活动,为您提供对存储、分析和修复操作的控制。跟踪(Trail)是一种配置,帮助将 CloudTrail 事件交付到您指定的 Amazon Simple Storage Service (Amazon S3) 存储桶。
CloudTrail 提供三种类型的跟踪,用于监控和记录 AWS 基础设施中的账户活动。第一种是多区域跟踪,可捕获所有 AWS 区域的活动。默认情况下,通过 AWS Management Console 创建跟踪时,它适用于所有区域。第二种是单区域跟踪,仅在 AWS CLI 中可用,捕获特定区域的活动。但是,我们建议使用多区域跟踪以获得更广泛的覆盖。
最后是组织跟踪,在使用 AWS Organizations 服务时适用于组织内的所有 AWS 账户。这种跟踪类型在多账户环境中提供全面覆盖和集中监控。
通过使用这些跟踪类型,您可以定制 CloudTrail 设置以满足区域级别或整个 组织的监控和记录要求。以下是 CloudTrail Trails 的一些最佳实践。
在所有 AWS 账户和区域中配置 CloudTrail
要获取用户、角色或服务在 AWS 账户中执行的操作的完整记录,请配置每个跟踪以记录所有 AWS 区域中的事件。在公司或组织使用的每个 AWS 账户中设置这些跟踪。此设置确保无论事件发生在哪个 AWS 区域,每个事件都会被记录。因此,您可以检测在其他未使用区域中的意外活动。全球服务事件(例如 AWS Identity and Access Management 和 Amazon Route 53)也会包含并记录。如果您创建适用于所有区域的跟踪,任何新的 AWS 区域都会自动包含在内。如果您通过 AWS Organizations 拥有多账户设置,可以创建一个跟踪来记录该组织中所有 AWS 账户的所有事件。
为不同用例设置单独的跟踪
CloudTrail 支持审计、安全监控和运维故障排除等用例。AWS 建议您为每个用例设置多个跟踪,以便为每个团队提供他们所需的信息。为此,为不同用户创建跟踪来管理。可以将跟踪配置为将日志文件交付到单独的 S3 存储桶。例如,安全管理员可以创建一个适用于所有区域的跟踪,使用一个 AWS Key Management Service (AWS KMS) 密钥加密日志文件,并启用日志文件验证。同一公司的开发人员可以创 建一个仅适用于一个区域的跟踪,并配置 Amazon CloudWatch 告警以接收特定 API 活动的通知。
配置 CloudTrail 日志交付到具有有限访问权限的单独安全边界中的 S3 存储桶(单独的 AWS 账户)
出于审计目的,当您将日志文件存储在单独管理域中的专用 S3 存储桶中时,可以实施严格的安全控制和职责分离。限制对此 S3 存储桶的访问将减少未经授权和不受限制访问日志的可能性。当您实施这些控制时,如果任何 AWS 账户凭证被泄露,日志不会丢失,因为它们存储在单独的域中。
在存储日志文件的 Amazon S3 存储桶上启用 MFA 删除和版本控制
通过在此 S3 存储桶上配置多因素身份验证 (MFA),您可以确保永久删除存储桶或存储桶中的对象需要额外的身份验证。此外,启用版本控制的存储桶可以帮助您从意外删除或覆盖中恢 复对象。例如,如果您删除一个对象,Amazon S3 会插入一个删除标记而不是永久删除该对象。即使大多数 AWS 用户和管理员没有恶意意图,某人可能会意外删除存储关键日志文件的 S3 存储桶。当您添加这些保护措施时,可以降低日志文件被泄露的风险。
启用 CloudTrail 日志文件完整性验证
CloudTrail 日志文件完整性验证让您知道日志文件是否已被删除或更改。您还可以使用此验证确认在给定时间段内没有日志文件交付到您的账户。这些洞察在安全和取证调查中非常有价值。它们提供了额外的保护层以确保日志文件的完整性。CloudTrail 日志文件完整性验证使用行业标准算法:SHA-256 用于哈希,SHA-256 with RSA 用于数字签名,这使得在不被检测到的情况下修改日志文件在计算上是不可行的。
加密静态 CloudTrail 日志文件
默认情况下,CloudTrail 交付到存储桶的日志文件通过 Amazon S3 管理的加密密钥 (SSE-S3) 的 Amazon 服务端加密进行加密。要提供可直接管理的安全层,您可以改用 AWS KMS 管理的密钥 (SSE-KMS) 的服务端加密来加密 CloudTrail 日志文件。
为跟踪开启数据事件
数据事件提供对在 S3 和 AWS Lambda 上执行的资源操作的可见性。这些事件也称为数据面操作。数据事件通常是高流量活动,特别是如果您在 S3 上存储敏感数据或通过 Lambda 函数执行关键业务操作。对敏感数据的任何意外访问的可见性使您能够采取纠正措施来保护数据。由于某些合规报告(例如 FedRAMP 和 PCI-DSS)要求开启数据事件,AWS 建议您使用 AWS Config 托管规则或适当的合规包示例模板来检查至少有一个跟踪正在记录所有 S3 存储桶的 S3 数据事件。
在数据事件中使用高级事件选择器
使用数据事件时,高级事件选择器提供更精细的数据事件日志记录控制。通过高级事件选择器,您可以包含或排除 EventSource、EventName 和 ResourceARN 等字段上的值。高级事件选择器还支持使用部分字符串的模式匹配来包含或排除值,类似于正则表达式。这提供了对要记录和付费的 CloudTrail 数据事件的更多控制。例如,您可以记录 S3 DeleteObject API 以将收到的 CloudTrail 事件缩小到仅破坏性操作,从而在控制成本的同时识别安全问题。请注意,当您使用 CloudTrail 进行审计时,最佳实践是记录所有数据事件。但是,当您将数据事件用于运维监控或其他用例时,高级事件选择器会非常有用。
将 CloudTrail 与 Amazon CloudWatch Logs 集成
Amazon CloudWatch 帮助您以日志、metrics 和事件的形式收集监控和运维数据。当您将 CloudTrail 与 CloudWatch Logs 集成时,可以近实时监控和接收 CloudTrail 捕获的特定事件的告警。例如,您可以为异常 AWS API 活动设置告警和通知。
将 CloudTrail 与 CloudWatch Logs 集成时,您还可以可视化 CloudWatch Insights 生成的数据。这些洞察允许您提取所需的数据,简化查询过程。例如,您可以使用 CloudWatch Logs 近实时地将日志流式传输到 Amazon Elasticsearch Service,然后访问 Kibana endpoint 来可视化数据。
将跟踪应用于所有区域
要捕获 IAM 身份或服务在 AWS 账户中执行的所有操作,请配置每个跟踪以记录所有区域中的事件。通过记录所有区域中的事件,您可以确保 AWS 账户中发生的所有事件都被记录,无论它们发生在哪个区域。
将 CloudTrail 日志交付到中央 S3 存储桶
配置 CloudTrail 日志交付到单独 AWS 账户中具有有限访问权限的中央 S3 存储桶。您可以定义 Amazon S3 访问策略来限制谁可以访问 CloudTrail 交付的日志的权限。这可以帮助最大限度地减少未经授权访问日志。
在存储日志文件的 S3 存储桶上配置数据保护
为此,请执行以下操作:
- 开启多因素身份验证 (MFA),为 S3 存储桶添加额外的安全层。MFA 要求对任何删除存储桶或存储桶中对象的请求进行两种形式的身份验证。
- 在 S3 存储桶上开启版本控制,帮助从意外删除或更改中恢复对象。添加此额外保护层可以帮助降低文件被更改的风险。
- 为 CloudTrail 日志文件开启加密,为交付到 S3 存储桶的日志文件添加额外的保护措施。
- 配置日志文件验证,确保 CloudTrail 交付的日志文件在交付后未被更改。
在 S3 存储桶上配置对象生命周期管理
CloudTrail 的跟踪默认将日志文件无限期存储在为跟踪配置的 S3 存储桶中。您可以使用 Amazon S3 对象生命周期管理规则来定义自己的保留策略,以更好地满足业务和审计需求。例如,您可能希望将超过 1 年的日志文件归档到不同的存储层,如 Amazon Simple Storage Service Glacier (Amazon S3 Glacier)。另一个示例是在经过一定时间后删除日志文件。
限制对 AWSCloudTrail_FullAccess 策略的访问
以下是限制访问此策略的一些原因:
- 拥有 AWSCloudTrail_FullAccess 策略的用户可以在其 AWS 账户中禁用或重新配置关键和重要的审计功能。
- 此策略不适合在 AWS 账户中的 IAM 身份之间共享或广泛应用。将此策略的应用限制在您期望担任 AWS 账户管理员的个人。